C++-এ std::unordered_set
এবং std::unordered_map
হলো স্ট্যান্ডার্ড লাইব্রেরির দুটি অর্ডারহীন কনটেইনার যা হ্যাশ টেবিল ব্যবহার করে কাজ করে। এগুলি সাধারণত std::set
এবং std::map
এর বিকল্প, তবে তারা উপাদানগুলিকে কোনো নির্দিষ্ট অর্ডারে রাখে না এবং খোঁজার গতি দ্রুত হয়, বিশেষত বড় ডেটাসেটের জন্য।
std::unordered_set
std::unordered_set
একটি কনটেইনার যা একক মান সংরক্ষণ করে এবং এই মানগুলোকে অর্ডারহীনভাবে (unordered) রাখে। এটি হ্যাশ টেবিল ব্যবহার করে, যার ফলে অনুসন্ধান (search), যোগ (insert), এবং অপসারণ (erase) অপারেশনগুলি গড়ে O(1) সময়ে সম্পন্ন হয়, যদি হ্যাশ ফাংশন ভালভাবে কাজ করে।
std::set
এর মতো)।#include <iostream>
#include <unordered_set>
int main() {
// unordered_set তৈরি করা
std::unordered_set<int> mySet = {10, 20, 30, 40};
// উপাদান যোগ করা
mySet.insert(50);
mySet.insert(60);
// উপাদান চেক করা
if (mySet.find(30) != mySet.end()) {
std::cout << "30 is found in the set" << std::endl;
}
// উপাদান প্রিন্ট করা
std::cout << "Elements in unordered_set: ";
for (const int& num : mySet) {
std::cout << num << " ";
}
return 0;
}
আউটপুট (অর্ডার পরিবর্তিত হতে পারে):
30 is found in the set
Elements in unordered_set: 10 20 30 40 50 60
std::unordered_map
std::unordered_map
একটি কনটেইনার যা কী-ভ্যালু জোড়া (key-value pairs) সংরক্ষণ করে এবং এই জোড়াগুলোকে অর্ডারহীনভাবে (unordered) রাখে। এটি একটি হ্যাশ টেবিলের মত কাজ করে এবং গড় O(1) সময়ে কী-ভ্যালু পেয়ারগুলো অ্যাক্সেস করা সম্ভব হয়।
std::unordered_map
কনটেইনারটি প্রতিটি উপাদানে একটি কী এবং সেই কী সম্পর্কিত একটি ভ্যালু সংরক্ষণ করে।#include <iostream>
#include <unordered_map>
int main() {
// unordered_map তৈরি করা
std::unordered_map<std::string, int> myMap;
// কী-ভ্যালু যোগ করা
myMap["apple"] = 3;
myMap["banana"] = 5;
myMap["orange"] = 2;
// ভ্যালু খোঁজা
std::cout << "apple count: " << myMap["apple"] << std::endl;
// কী-ভ্যালু জোড়া প্রিন্ট করা
std::cout << "Elements in unordered_map:" << std::endl;
for (const auto& pair : myMap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
আউটপুট (অর্ডার পরিবর্তিত হতে পারে):
apple count: 3
Elements in unordered_map:
banana: 5
apple: 3
orange: 2
std::unordered_set
এবং std::unordered_map
এর মধ্যে পার্থক্যবৈশিষ্ট্য | std::unordered_set | std::unordered_map |
---|---|---|
ডেটা স্ট্রাকচার | একক উপাদান (unique elements) | কী-ভ্যালু জোড়া (key-value pairs) |
কী | উপাদান (ভ্যালু) | কী (key) এবং ভ্যালু (value) |
অর্ডার | অর্ডারহীন (unordered) | অর্ডারহীন (unordered) |
হ্যাশ টেবিল | হ্যাশ টেবিল ব্যবহার করে | হ্যাশ টেবিল ব্যবহার করে |
গতি | গড় O(1) অনুসন্ধান (search), যোগ (insert) এবং অপসারণ (erase) | গড় O(1) অনুসন্ধান (search), যোগ (insert) এবং অপসারণ (erase) |
std::unordered_set
: এটি একটি কনটেইনার যা একক মান (unique values) সংরক্ষণ করে এবং অর্ডারহীনভাবে রাখে। এর ব্যবহার সাধারণত সেটের মধ্যে কোনো বিশেষ অর্ডার না রাখলেও খোঁজার গতি দ্রুত চাইলে হয়।std::unordered_map
: এটি একটি কনটেইনার যা কী-ভ্যালু জোড়া সংরক্ষণ করে এবং এই জোড়াগুলোকে অর্ডারহীনভাবে রাখে। std::unordered_map
দ্রুতভাবে কী-ভ্যালু পেয়ার অ্যাক্সেস করতে সাহায্য করে।এই কনটেইনারগুলো সাধারণত বড় ডেটাসেট এবং দ্রুত অনুসন্ধান ও যোগ/অপসারণ অপারেশন প্রয়োজন এমন পরিস্থিতিতে ব্যবহৃত হয়।
Read more